#ifndef ROTHC
#define ROTHC
//#include "stdafx.h"


// models C content development
//gets C in % ; calculates with C in [t/ha]; outputs C in %
//class RothC
//{
//    static const int EQUICONST=4000;// number of months for equilibrium run
//    static const int EWR_MODE=0;// code for nmethod to calculate root and residues input
//    static const int NPOOLS=10;//potential number of cpools
//    static const int NOCROP=64;//code for no crop
//
//    static Par_Maps par_rothc_crop_pool_distri;
//    static Par_Maps par_rothc_fert_pool_distri;
//    static Par_Maps par_rothc_EWR_franko ;
//    static Par_Maps par_fert_props;
//    static Par_Seed_Harvest par_default_date_seeding_harvest;
//
//    double timestep;
//    timestamp time;
//    double K_hum;
//    double non_CO2_fraction;
//    ////////////// Pools ///////////////////////////////////
//    double Cpool[3][NPOOLS];
//    double Npool[3][NPOOLS];
//    double kC[NPOOLS];
//    int dpm,rpm1,rpm2,hum,bio,iom;
//        // [time_step][Pool_type]
//        //[0] DPM; [1] RPM1; [2] RPM2;[3]HUM;[4]BIO;[5]IOM
//    ////////////////C_Input////////////////////////////////////////
//    double Cinput[NPOOLS];
//        //[0] DPM; [1] RPM1; [2] RPM2;[3]HUM;[4]BIO;[5]IOM
//    ////////////////Response//////////////////////////////////////////////
//    double response[NPOOLS];
//    ///////////////////////////////////////////////////////////////////////
//
//    int respT,respWC,respVeg;
//    
//    // Methoden
//	double get_Tresponse(double temp);
//	double get_WCresponse(double wc,double maxwc);
//	double get_SOCOresponse(double cropid);
//	double get_maxwc (double clay);
//	double get_EWR_franko(int croipid, double yield);
//	double get_C_from_fert(int fertid,double amount);
//	int set_Cinput(double a);
//	int Fill_Cinput_with_fert(int fertid,double amount);
//	int Fill_Cinput_with_EWR(int cropid, double amount);
//
//	int init_est_pool_stocks(  int iom_mode, RothC_Input &driver);
//	double call_equlibrium_run(RothC_Input &driver);
//	double call_RothC_during_equilibrium_run(RothC_Input &driver, double iCinput);
//	double brent(double ax, double bx, double cx, double tol,double *xmin,RothC_Input &driver);
//	double model();
//	  
//public:
//     static void read_RothC_Par_Maps()
//     {
//        string root="./par/";
//        string suffix=".par";
//        string name="Par_RothC_Crop_Pool_Distri";
//        par_rothc_crop_pool_distri.read_Par_Maps(root,name,suffix);
//         name="Par_RothC_Fert_Pool_Distri";
//        par_rothc_fert_pool_distri.read_Par_Maps(root,name,suffix);
//         name="Par_Rothc_EWR_Franko";
//        par_rothc_EWR_franko.read_Par_Maps(root,name,suffix);
//        name="Par_Fert_Props";
//        par_fert_props.read_Par_Maps(root,name,suffix);
//        name="Par_Default_Date_Seeding_Harvest";
//        par_default_date_seeding_harvest.read_paras(root,name,suffix);
//    }
//    RothC( RothC_Input &driver);
//                    //Initializes and declares system
//                    //equilibrium run
//    double call_RothC(RothC_Input &driver);
//					// model_run
//    int get_wc(RothC_Input &driver);
//    int get_bucket_storage(map<const string,vector<double> > &weather,string source,string sink, string target,double minvol, double maxvol);
//
//};

#endif

